package gt.edu.usac.model.am;


import gt.edu.usac.model.am.common.AppModule;
import gt.edu.usac.model.eo.CalOrdenPagoImpl;
import gt.edu.usac.model.eo.CalPersonaImpl;
import gt.edu.usac.model.vo.InscripcionSaldoViewImpl;
import gt.edu.usac.model.vo.InscripcionViewImpl;
import gt.edu.usac.model.vo.PaisViewImpl;
import gt.edu.usac.model.vo.PreasignacionViewImpl;

import gt.edu.usac.model.vo.UsuarioLogueadoViewImpl;
import gt.edu.usac.model.vo.consultarNotasViewImpl;
import gt.edu.usac.model.vo.gestionCambioViewImpl;
import gt.edu.usac.model.vo.gestionConstanciaViewImpl;
import gt.edu.usac.model.vo.gestionReposicionViewImpl;
import gt.edu.usac.model.vo.gestionViewImpl;
import gt.edu.usac.model.vo.idiomaViewImpl;
import gt.edu.usac.model.vo.idiomasDisponiblesInscripcionViewImpl;
import gt.edu.usac.model.vo.idiomasDisponiblesViewImpl;
import gt.edu.usac.model.vo.idiomasGanadosViewImpl;
import gt.edu.usac.model.vo.inscripcionesActualesViewImpl;
import gt.edu.usac.model.vo.maxPersonaImpl;

import gt.edu.usac.model.vo.ordenPagoViewImpl;
import gt.edu.usac.model.vo.preasignacionImpl;
import gt.edu.usac.model.vo.preinscripcionViewImpl;
import gt.edu.usac.model.vo.seccionesParaCambioViewImpl;
import gt.edu.usac.model.vo.temporadaVarianteViewImpl;
import gt.edu.usac.model.vo.tipoTemporadaViewImpl;
import gt.edu.usac.model.vo.tipo_poblacionImpl;
import gt.edu.usac.sgimodel.util.utils_DB;

import java.sql.ResultSet;

import java.sql.SQLException;

import oracle.jbo.Row;
import oracle.jbo.domain.Number;
import oracle.jbo.server.ApplicationModuleImpl;
// ---------------------------------------------------------------------
// ---    File generated by Oracle ADF Business Components Design Time.
// ---    Custom code may be added to this class.
// ---    Warning: Do not modify method signatures of generated methods.
// ---------------------------------------------------------------------
public class AppModuleImpl extends ApplicationModuleImpl implements AppModule {
    /**This is the default constructor (do not remove)
     */
    public AppModuleImpl() {
    }

    /**Sample main for debugging Business Components code using the tester.140
     */
    public static void main(String[] args) {
        launchTester("gt.edu.usac.model.am", /* package name */
      "AppModuleLocal" /* Configuration Name */);
    }

    /**Container's getter for UsuarioLogueadoView1
     */
    public UsuarioLogueadoViewImpl getUsuarioLogueadoView1() {
        return (UsuarioLogueadoViewImpl)findViewObject("UsuarioLogueadoView1");
    }


    /**Container's getter for tipo_poblacion1
     */
    public tipo_poblacionImpl gettipo_poblacion1() {
        return (tipo_poblacionImpl)findViewObject("tipo_poblacion1");
    }


    /**Container's getter for maxPersona1
     */
    public maxPersonaImpl getmaxPersona1() {
        return (maxPersonaImpl)findViewObject("maxPersona1");
    }

    /**Container's getter for PreasignacionView1
     */
    public PreasignacionViewImpl getPreasignacionView1() {
        return (PreasignacionViewImpl)findViewObject("PreasignacionView1");
    }

    /**Container's getter for idiomasDisponiblesView1
     */
    public idiomasDisponiblesViewImpl getidiomasDisponiblesView1() {
        return (idiomasDisponiblesViewImpl)findViewObject("idiomasDisponiblesView1");
    }


    /**Container's getter for preasignacion1
     */
    public preasignacionImpl getpreasignacion1() {
        return (preasignacionImpl)findViewObject("preasignacion1");
    }

    /**Container's getter for preinscripcionView1
     */
    public preinscripcionViewImpl getpreinscripcionView1() {
        return (preinscripcionViewImpl)findViewObject("preinscripcionView1");
    }


    public void llenarPreasignar() {
        preasignacionImpl preasignacion = this.getpreasignacion1();
        Row preasignarRow = preasignacion.createRow();
        preasignarRow.setAttribute("IdPersona","2");

        preasignacion.insertRow(preasignarRow);
    }


    /**Container's getter for idiomasDisponiblesInscripcionView1
     */
    public idiomasDisponiblesInscripcionViewImpl getidiomasDisponiblesInscripcionView1() {
        return (idiomasDisponiblesInscripcionViewImpl)findViewObject("idiomasDisponiblesInscripcionView1");
    }


    /**Container's getter for gestionView1
     */
    public gestionViewImpl getgestionView1() {
        return (gestionViewImpl)findViewObject("gestionView1");
    }

    /**Container's getter for gestionConstanciaView1
     */
    public gestionConstanciaViewImpl getgestionConstanciaView1() {
        return (gestionConstanciaViewImpl)findViewObject("gestionConstanciaView1");
    }


    /**Container's getter for gestionReposicionView1
     */
    public gestionReposicionViewImpl getgestionReposicionView1() {
        return (gestionReposicionViewImpl)findViewObject("gestionReposicionView1");
    }

    /**Container's getter for idiomasGanadosView1
     */
    public idiomasGanadosViewImpl getidiomasGanadosView1() {
        return (idiomasGanadosViewImpl)findViewObject("idiomasGanadosView1");
    }

    /**Container's getter for idiomaView1
     */
    public idiomaViewImpl getidiomaView1() {
        return (idiomaViewImpl)findViewObject("idiomaView1");
    }

    /**Container's getter for tipoTemporadaView1
     */
    public tipoTemporadaViewImpl gettipoTemporadaView1() {
        return (tipoTemporadaViewImpl)findViewObject("tipoTemporadaView1");
    }

    /**Container's getter for inscripcionesActualesView1
     */
    public inscripcionesActualesViewImpl getinscripcionesActualesView1() {
        return (inscripcionesActualesViewImpl)findViewObject("inscripcionesActualesView1");
    }

    /**Container's getter for seccionesParaCambioView1
     */
    public seccionesParaCambioViewImpl getseccionesParaCambioView1() {
        return (seccionesParaCambioViewImpl)findViewObject("seccionesParaCambioView1");
    }

    /**Container's getter for gestionCambioView1
     */
    public gestionCambioViewImpl getgestionCambioView1() {
        return (gestionCambioViewImpl)findViewObject("gestionCambioView1");
    }

    /**Container's getter for ordenPagoView1
     */
    public ordenPagoViewImpl getordenPagoView1() {
        return (ordenPagoViewImpl)findViewObject("ordenPagoView1");
    }
    
    
    public oracle.jbo.domain.Number generaOrdenPago(oracle.jbo.domain.Number monto, Integer idPersona, String nombre){
        //SIIF.SGI_GENERACION_ORDEN_PAGO_PK.Insertar_Orden_Pago(1402, 0,0,0,'jose carranza',7800,'102','YES')
       ResultSet result=null;
       result = utils_DB.callStoredFunction3(getDBTransaction(),"SIIF.SGI_GENERACION_ORDEN_PAGO_PK.Insertar_Orden_Pago(?,?,?,? ,?,?,?,?)",
                                             new Object[] {
                                                idPersona, //id persona
                                                0, //unidad
                                                0, //extension
                                                0, //carrera
                                                nombre, //nombre
                                                monto, //monto
                                                "102", //Mnemonico
                                                "YES" //commit
                                             });

        
                                              
                                             

        try {
            if(result.next()){
            if(result.getInt(1)==1){
                CalOrdenPagoImpl orden =(CalOrdenPagoImpl)CalOrdenPagoImpl.getDefinitionObject().createInstance2(getDBTransaction(),null);
                oracle.jbo.domain.Number idOrden=new oracle.jbo.domain.Number(result.getString(3));
                orden.setIdOrdenPago(idOrden);
                orden.setChksum(new oracle.jbo.domain.Number(result.getString(4)));
                orden.setEstado("PENDIENTE");                
                orden.setMonto(monto);
                getDBTransaction().commit();     
                return idOrden;
            }
            
        }
        } catch (SQLException e) {
            e.printStackTrace();            
        }
        return null;
        
        
    
    }
    
    public oracle.jbo.domain.Number generaOrdenPagoYDetalle(oracle.jbo.domain.Number monto, Integer idPersona, String nombre, String temporada, Integer anio){        
       ResultSet resultOrden=null,resultDetalle=null;
       oracle.jbo.domain.Number idOrden=null;
       temporadaVarianteViewImpl variante=gettemporadaVarianteView1();
       resultOrden = utils_DB.callStoredFunction3(getDBTransaction(),"SIIF.SGI_GENERACION_ORDEN_PAGO_PK.Insertar_Orden_Pago(?,?,?,? ,?,?,?,?)",
                                             new Object[] {
                                                idPersona, //id persona
                                                0, //unidad
                                                0, //extension
                                                0, //carrera
                                                nombre, //nombre
                                                monto, //monto
                                                "102", //Mnemonico
                                                "YES" //commit
                                             });

        variante.settemporada(temporada);
        variante.executeQuery();
        try {
            if(resultOrden.next()){
                if(resultOrden.getInt(1)==1){ 
                    idOrden=new oracle.jbo.domain.Number(resultOrden.getString(3)); //orden de pago
                }            
            }
        } catch (SQLException e) {
            e.printStackTrace();     
            return null;
        }
        resultDetalle= utils_DB.callStoredFunction3(getDBTransaction(),"SIIF.SGI_GENERACION_ORDEN_PAGO_PK.Insertar_Orden_Pago_Detalle(?,?,?, ?,?,?)",
                                              new Object[] {
                                                 idOrden, //id orden de pago
                                                 Integer.valueOf("10")/*temporada*/, //rubro
                                                 variante.first().getAttribute("Variante"), //variante
                                                 anio, //anio temporada                                                 
                                                 monto, //monto                                                 
                                                 "YES" //commit
                                              });                                      
                                             
        try {
            if(resultDetalle.next()){
                if(resultDetalle.getInt(1)==1){
                    CalOrdenPagoImpl orden =(CalOrdenPagoImpl)CalOrdenPagoImpl.getDefinitionObject().createInstance2(getDBTransaction(),null); 
                    orden.setIdOrdenPago(idOrden);
                    orden.setChksum(new oracle.jbo.domain.Number(resultOrden.getString(4))); //checksum
                    orden.setEstado("PENDIENTE");                
                    orden.setMonto(monto);
                    getDBTransaction().commit();     
                    return idOrden;
                }
            
            }
        } catch (SQLException e) {
            e.printStackTrace();     
            return null;
        }
        
        return null;
        
        
    
    }

    /**Container's getter for temporadaVarianteView1
     */
    public temporadaVarianteViewImpl gettemporadaVarianteView1() {
        return (temporadaVarianteViewImpl)findViewObject("temporadaVarianteView1");
    }

    /**Container's getter for InscripcionSaldoView1
     */
    public InscripcionSaldoViewImpl getInscripcionSaldoView1() {
        return (InscripcionSaldoViewImpl)findViewObject("InscripcionSaldoView1");
    }

    /**Container's getter for InscripcionView1
     */
    public InscripcionViewImpl getInscripcionView1() {
        return (InscripcionViewImpl)findViewObject("InscripcionView1");
    }

    /**Container's getter for PaisView1
     */
    public PaisViewImpl getPaisView1() {
        return (PaisViewImpl)findViewObject("PaisView1");
    }

    /**Container's getter for consultarNotasView1
     */
    public consultarNotasViewImpl getconsultarNotasView1() {
        return (consultarNotasViewImpl)findViewObject("consultarNotasView1");
    }
}
